package com.controleur.listener.impl;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.JTable;

import com.main.EasyLunch;
import com.modele.dao.impl.RestaurantDAO;
import com.modele.entity.Restaurant;
import com.vue.Fenetre;
import com.vue.RestaurantApercuVue;
import com.vue.RestaurantListeVue;
import com.vue.RestaurantModifierVue;

public class RestaurantButtonEditor extends DefaultCellEditor {
	
	private static final long serialVersionUID = 1L;
	protected JButton button;
	private boolean isPushed;
	private ButtonListener bListener = new ButtonListener();
	private Fenetre fenetre;
	/**
	 * Constructeur avec une checkBox
	 * @param checkBox
	 * @param count
	 */
	public RestaurantButtonEditor(JCheckBox checkBox,Fenetre fenetre) {
		//Par défaut, ce type d'objet travaille avec un JCheckBox
		super(checkBox);
		this.fenetre = fenetre;
 	    //On crée à nouveau notre bouton
		button = new JButton();
	    button.setOpaque(true);
	    button.addActionListener(bListener);
	}

	public Component getTableCellEditorComponent(JTable table, Object value,
	                   boolean isSelected, int row, int column) { 
		//On définit le numéro de ligne à notre listener
		bListener.setRow(row);
		//Idem pour le numéro de colonne
		bListener.setColumn(column);
		//On passe aussi le tableau pour des actions potentielles
		bListener.setTable(table);
		//On réaffecte le libellé au bouton
		button.setText( (value ==null) ? "" : value.toString() );
		//On renvoie le bouton
	    return button;
	}
	
	/**
	 * Notre listener pour le bouton
	 *
	 */
	class ButtonListener implements ActionListener{
		  
		  private int column, row;
		  private JTable table;
		  private int nbre = 0;
		  
		  public void setColumn(int col){this.column = col;}
		  public void setRow(int row){this.row = row;}
		  public void setTable(JTable table){this.table = table;}
		  public String getColumnName(){return table.getColumnName(this.column);}
		  
		  

		  @Override
		  public void actionPerformed(ActionEvent event) {
			  System.out.println("getcolname "+column);
			  
			  String col0= table.getValueAt(row, 0).toString();
			  String col1 = table.getValueAt(row, 1).toString();
			  String col2 = table.getValueAt(row, 2).toString();
			  System.out.println("getrow = "+col0+" "+col1+" "+col2);

			  switch(column){
				  case 0 :fenetre.setPanneau(new RestaurantApercuVue(fenetre,col0));
				  			break;
				  case 3 :fenetre.setPanneau(new RestaurantModifierVue(fenetre,col0));
				  			break;
				  case 4 :int  i = JOptionPane.showConfirmDialog(null, "Vouler vous vraiment supprimer :"+col0, "ATTENTION !", JOptionPane.OK_OPTION); 
						  	if(i==0){
						  		System.out.println("cols 0");
						  		RestaurantDAO dao = (RestaurantDAO)EasyLunch.getFactory().getRestaurantDAO();
						  		RestaurantControler controleur = new RestaurantControler();
						  		Restaurant resto =controleur.findByName(col0);
						  		dao.delete(resto);
						  		fenetre.setPanneau(new RestaurantListeVue(fenetre));
						  	}
				  			break;
			  }
		  }
	}
}